//package com.dkx.springbootwebsocket.service;
//
//import com.dkx.springbootwebsocket.entity.Message;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.messaging.simp.SimpMessagingTemplate;
//import org.springframework.messaging.simp.user.SimpSession;
//import org.springframework.messaging.simp.user.SimpSubscription;
//import org.springframework.messaging.simp.user.SimpUser;
//import org.springframework.messaging.simp.user.SimpUserRegistry;
//import org.springframework.stereotype.Service;
//
//import java.util.UUID;
//
///**
// * @Author: 杜科璇
// * @Description: TODO
// * @Date: 2025/10/31 21:57
// * @Version: 1.0
// */
//
//// MessageRoutingDebugService.java
//@Service
//@Slf4j
//public class MessageRoutingDebugService {
//
//    @Autowired
//    private SimpMessagingTemplate messagingTemplate;
//
//    @Autowired
//    private SimpUserRegistry simpUserRegistry;
//
//    /**
//     * 调试消息路由
//     */
//    public void debugMessageRouting(String fromUser, String toUser, String content) {
//        log.info("=== 开始消息路由调试 ===");
//
//        // 检查目标用户是否在 simpUserRegistry 中
//        SimpUser targetUser = simpUserRegistry.getUser(toUser);
//        if (targetUser != null) {
//            log.info("找到目标用户: {}", toUser);
//            log.info("用户会话数: {}", targetUser.getSessions().size());
//
//            for (SimpSession session : targetUser.getSessions()) {
//                log.info("会话ID: {}, 订阅数: {}", session.getId(), session.getSubscriptions().size());
//                for (SimpSubscription subscription : session.getSubscriptions()) {
//                    log.info("  订阅目的地: {}", subscription.getDestination());
//                }
//            }
//        } else {
//            log.warn("未在 simpUserRegistry 中找到目标用户: {}", toUser);
//        }
//
//        // 创建测试消息
//        Message message = new Message(
//                UUID.randomUUID().toString(),
//                fromUser,
//                toUser,
//                content,
//                Message.MessageType.P2P,
//                System.currentTimeMillis(),
//                false
//        );
//
//        // 尝试不同的发送方式
//        log.info("尝试方式1: convertAndSendToUser");
//        try {
//            messagingTemplate.convertAndSendToUser(toUser, "/queue/messages", message);
//            log.info("方式1发送成功");
//        } catch (Exception e) {
//            log.error("方式1发送失败: {}", e.getMessage());
//        }
//
//        log.info("尝试方式2: 直接 convertAndSend");
//        try {
//            String destination = "/user/" + toUser + "/queue/messages";
//            messagingTemplate.convertAndSend(destination, message);
//            log.info("方式2发送成功");
//        } catch (Exception e) {
//            log.error("方式2发送失败: {}", e.getMessage());
//        }
//
//        log.info("尝试方式3: 使用特定会话发送");
//        if (targetUser != null) {
//            for (SimpSession session : targetUser.getSessions()) {
//                try {
//                    String destination = "/user/" + session.getId() + "/queue/messages";
//                    messagingTemplate.convertAndSend(destination, message);
//                    log.info("方式3发送成功到会话: {}", session.getId());
//                } catch (Exception e) {
//                    log.error("方式3发送失败到会话 {}: {}", session.getId(), e.getMessage());
//                }
//            }
//        }
//
//        log.info("=== 消息路由调试结束 ===");
//    }
//}